for(i = 0; i < VBD_HTAB_SZ; i++) {
for(v = p->vbdtab[i]; v; v = v->next) {
+
xdi->disks[xdi->count].device = v->vdevice;
xdi->disks[xdi->count].info = XD_FLAG_VIRT | XD_TYPE_DISK;
- /* XXX SMH: and now set XD_FLAG_RO if necessary */
-
+ if(!VBD_CAN_WRITE(v))
+ xdi->disks[xdi->count].info |= XD_FLAG_RO;
+
xdi->disks[xdi->count].capacity = 0;
for(x = v->extents; x; x = x->next)
xdi->disks[xdi->count].capacity += x->extent.nr_sectors;
#define VBD_MODE_W 0x2
#define VBD_CAN_READ(_v) ((_v)->mode & VBD_MODE_R)
-#define VBD_CAN_WRITE(_v) ((_v)->mode & VBD_MODE_R)
+#define VBD_CAN_WRITE(_v) ((_v)->mode & VBD_MODE_W)
typedef struct _vbd_create {